// 220125 2028

/*
RESTful API
Representational State Transfer，简称REST
Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格

GET PUT DELETE POST

RESTful Web Services
Web service是一个平台独立的，低耦合的，自包含的、基于可编程的web的应用程序
*/

// 程序：实现基于 users.json 文件的增删查

var express = require('express');
var app = express();
var fs = require('fs');

// 本文件所在目录
console.log("__dirname=" + __dirname);

var fpath = __dirname + "/" + "users.json";

// 显示所有用户
app.get('/listUsers', function(req, res) {
	fs.readFile(fpath, "utf8", function(err, data) {
		console.log(data);
		res.end(data);
	});
});

// 添加用户
var nuser = {
	"user4": {
      "name" : "user4name",
      "password" : "uer4pwd",
      "profession" : "user4profession",
      "id": 4
	}
}

app.get('/addUser', function(req, res) {
	fs.readFile(fpath, "utf8", function(err, data) {
		// 添加用户，但没有写入文件
		data = JSON.parse(data);
		data['user4'] = nuser['user4'];
		console.log(data);
		res.end(JSON.stringify(data));
	});
});

// 显示用户详情
app.get('/:id', function(req, res) {
	fs.readFile(fpath, 'utf8', function (err, data){
		data = JSON.parse(data);
		var user = data['user' + req.params.id];
		console.log(user);
		res.end(JSON.stringify(user));
	});
});

// 删除用户
app.get('/user/delete/:id', function(req, res) {
	fs.readFile(fpath, 'utf8', function (err, data) {
		data = JSON.parse(data);
		// delete 关键字？
		// js delete 用法(删除对象属性及变量)
		delete data['user' + req.params.id];
		
		console.log(data);
		res.end(JSON.stringify(data));
	});
});

// 启动服务器
var server = app.listen(8888, 'localhost', function() {
	var host = server.address().address;
	var port = server.address().port;
	
	console.log('服务已启动：http://%s:%s', host, port)
});
